package model.common.namespace;

import model.common.root.DirectedRelationship;
import model.common.root.Element;
import model.packages.PackageableElement;

/** An ElementImport is a DirectedRelationship between an importing Namespace and a 
 * PackageableElement. It adds the name of the PackageableElement to the importing Namespace.<p> 
 * The visibility of the ElementImport may be either the same or more restricted than 
 * that of the imported element.<p>
 * In case of a name clash with an outer name (an element that is defined in an enclosing Namespace that is available using its
 * unqualified name in enclosed Namespaces) in the importing Namespace, the outer name is hidden by an ElementImport, and the
 * unqualified name refers to the imported element. The outer name can be accessed using its qualified name. */
public class ElementImport extends DirectedRelationship {

	// Attributes
	private String alias;
	
	public VisibilityKind visibility;
	
	private NameSpace importingNamespace;
	
	private PackageableElement importedElement;
	
	// Constructor
	/**
	 * @param source
	 * @param target
	 */
	public ElementImport(Element source, Element target) {
		super(source, target);
	}

	
}
